/*  
    有3种创建函数的方法：
        1.利用构造函数（不常用）：var fun = new Function();
        2.利用函数声明式来创建（具名函数）：会存在声明提前
            语法：function 函数名(){
                函数体
            }
        3.利用函数表达式来创建（匿名函数）：不会存在声明提前
            语法：var fun = function(){
                函数体
            }

*/

/*
    函数的2种参数：形式参数和实际参数
    1.形参：在函数声明的时候赋予
    2.实参：在函数创建的时候赋予
    3.实参可以是任何的数据类型，既可以是一个对象，又可以是另外一个函数
        注意：fun2(fun1(10)) 和 fun2(fun1) 是不一样的，
            前者传递的参数是函数的返回值，后者传递的参数是整个函数对象
    4.如果实参的数量多于形参，那么程序也不会报错；如果实参的数量少于形参，那么相应的形参会变成undefined
*/

function fun1(r) {
    return 3.14*r*r;
}

function fun2(fun1) {
    console.log("fun1="+fun1);
}

fun2(fun1(10));